Group Predictions

Row

Win percentage for the week

Season Win Percentage

Games Correct

93

Games Picked

138

Number of predictions

118

Row

This Week’s Predictions
Game Prediction Winner Correct Correct Votes Correct Percent
1 Houston Texans New York Jets No 11 0.0932
2 Atlanta Falcons Atlanta Falcons Yes 97 0.8220
3 Baltimore Ravens Baltimore Ravens Yes 104 0.8814
4 Los Angeles Chargers Los Angeles Chargers Yes 94 0.7966
5 Cincinnati Bengals Cincinnati Bengals Yes 111 0.9407
6 Buffalo Bills Buffalo Bills Yes 112 0.9492
7 New England Patriots Tennessee Titans No 43 0.3644
8 New Orleans Saints Carolina Panthers No 9 0.0763
9 Washington Commanders Washington Commanders Yes 109 0.9237
10 Chicago Bears Arizona Cardinals No 51 0.4322
11 Philadelphia Eagles Philadelphia Eagles Yes 111 0.9407
12 Detroit Lions Detroit Lions Yes 97 0.8220
13 Seattle Seahawks Los Angeles Rams No 52 0.4407
14 Minnesota Vikings Minnesota Vikings Yes 113 0.9576
15 Kansas City Chiefs Kansas City Chiefs Yes 108 0.9153

Individual Predictions

row

Individual Table

Individual Results
Week 9
Name Weekly # Correct Percent Weeks Picked Season Percent Adj Season Percent Season Trend
Week 1 Week 2 Week 3 Week 4 Week 5 Week 6 Week 7 Week 8 Week 9
Nathan Brown 13 8 9 11 9 NA 10 11 14 0.9333 8 0.6855 0.6093
Michael Pacifico 13 8 7 9 9 12 12 10 14 0.9333 9 0.6812 0.6812
Randolph Tidd 11 7 8 12 NA 12 11 12 13 0.8667 8 0.6935 0.6164
Aubrey Conn 13 7 10 9 8 12 12 9 13 0.8667 9 0.6739 0.6739
Heather Ellenberger 13 8 7 8 7 12 11 11 13 0.8667 9 0.6522 0.6522
Randy Dick 11 7 8 8 9 14 10 10 13 0.8667 9 0.6522 0.6522
Gregory Brown 15 7 6 9 8 12 9 9 13 0.8667 9 0.6377 0.6377
Steward Hogans 10 7 10 NA NA NA NA 10 13 0.8667 5 0.6329 0.3516
Jared Kaanga 11 9 9 8 7 10 9 11 13 0.8667 9 0.6304 0.6304
David Plate 10 8 8 8 9 NA NA NA 13 0.8667 6 0.6022 0.4015
Robert Cunningham 14 9 10 12 8 12 11 11 12 0.8000 9 0.7174 0.7174
Robert Gelo 14 8 9 9 8 13 13 11 12 0.8000 9 0.7029 0.7029
Marc Agne 14 7 9 13 6 13 10 9 12 0.8000 9 0.6739 0.6739
David Dupree 13 8 10 9 7 11 11 11 12 0.8000 9 0.6667 0.6667
George Sweet 13 9 6 10 11 9 11 11 12 0.8000 9 0.6667 0.6667
Erik Neumann 12 8 9 9 7 13 10 11 12 0.8000 9 0.6594 0.6594
Patrick Tynan 12 8 7 9 8 12 NA 12 12 0.8000 8 0.6504 0.5781
Rafael Torres 12 9 8 7 8 10 12 10 12 0.8000 9 0.6377 0.6377
Robert Sokol 10 8 NA NA 6 9 9 13 12 0.8000 7 0.6321 0.4916
Jeffrey Rudderforth 11 11 10 9 6 7 10 11 12 0.8000 9 0.6304 0.6304
Brayant Rivera 10 8 9 8 6 13 11 10 12 0.8000 9 0.6304 0.6304
Darryle Sellers 11 11 6 8 9 11 9 10 12 0.8000 9 0.6304 0.6304
Brandon Parks 12 6 9 9 6 13 NA NA 12 0.8000 7 0.6262 0.4870
Pablo Burgosramos 9 5 8 9 5 14 12 12 12 0.8000 9 0.6232 0.6232
Walter Archambo 8 8 7 9 6 12 11 11 12 0.8000 9 0.6087 0.6087
Thomas Mccoy 10 7 6 8 9 11 11 10 12 0.8000 9 0.6087 0.6087
David Humes 10 9 8 11 5 8 12 8 12 0.8000 9 0.6014 0.6014
Bunnaro Sun 12 5 8 11 6 8 9 9 12 0.8000 9 0.5797 0.5797
Steven Maisonneuve NA NA NA NA 11 10 11 12 11 0.7333 5 0.7432 0.4129
Ryan Wiggins NA NA NA NA NA NA NA NA 11 0.7333 1 0.7333 0.0815
Chris Papageorge 14 8 10 11 8 12 12 12 11 0.7333 9 0.7101 0.7101
Nicholas Cinco 12 8 NA NA 6 11 11 12 11 0.7333 7 0.6698 0.5210
Christopher Sims 11 9 10 8 7 10 12 14 11 0.7333 9 0.6667 0.6667
Travis Delagardelle 11 12 10 8 6 11 12 11 11 0.7333 9 0.6667 0.6667
Matthew Schultz 13 10 9 8 9 9 9 12 11 0.7333 9 0.6522 0.6522
Bradley Hobson 13 7 8 11 7 13 10 10 11 0.7333 9 0.6522 0.6522
Michelle Fraterrigo 11 8 9 9 7 11 12 12 11 0.7333 9 0.6522 0.6522
Shawn Carden 10 9 10 10 8 11 10 11 11 0.7333 9 0.6522 0.6522
Jeremy Stieler 11 9 6 11 6 13 11 11 11 0.7333 9 0.6449 0.6449
Karen Coleman 13 6 NA 11 9 9 10 9 11 0.7333 8 0.6393 0.5683
Michael Moss 13 8 8 8 10 13 8 9 11 0.7333 9 0.6377 0.6377
Daniel Halse 12 6 8 10 7 13 9 11 11 0.7333 9 0.6304 0.6304
Diance Durand 9 9 12 7 8 10 9 11 11 0.7333 9 0.6232 0.6232
Jason Schattel 13 7 6 9 10 11 9 10 11 0.7333 9 0.6232 0.6232
Ryan Baum 14 4 9 10 9 NA 10 10 11 0.7333 8 0.6210 0.5520
Jennifer Arty 10 7 9 7 7 12 8 12 11 0.7333 9 0.6014 0.6014
Scott Lefton 10 8 8 7 7 11 11 10 11 0.7333 9 0.6014 0.6014
Thomas Brenstuhl 9 8 NA 6 7 9 10 13 11 0.7333 8 0.5984 0.5319
Terry Hardison 13 8 6 7 4 11 10 12 11 0.7333 9 0.5942 0.5942
Zechariah Ziebarth 8 8 8 10 5 10 10 11 11 0.7333 9 0.5870 0.5870
Edward Ford 9 7 6 10 5 10 10 13 11 0.7333 9 0.5870 0.5870
Louie Renew 9 8 12 4 10 8 8 11 11 0.7333 9 0.5870 0.5870
George Mancini 11 8 6 NA 8 6 12 NA 11 0.7333 7 0.5849 0.4549
Matthew Blair NA NA NA NA NA 11 10 12 10 0.6667 4 0.7167 0.3185
Michael Linder 11 9 9 NA NA 12 10 11 10 0.6667 7 0.6667 0.5185
Ryan Cvik 10 8 9 11 9 11 11 13 10 0.6667 9 0.6667 0.6667
Pamela Augustine 14 9 9 NA 7 11 9 NA 10 0.6667 7 0.6509 0.5063
Bryson Scott 10 9 7 NA 7 12 11 12 10 0.6667 8 0.6393 0.5683
Philip Driskill 12 7 8 10 8 NA 13 11 10 0.6667 8 0.6371 0.5663
James Small 12 NA 9 10 8 10 9 9 10 0.6667 8 0.6311 0.5610
Nicole Dike 13 7 8 10 7 10 10 12 10 0.6667 9 0.6304 0.6304
Antonio Mitchell 11 7 8 9 9 11 10 11 10 0.6667 9 0.6232 0.6232
Richard Beeghley 11 7 6 11 7 14 10 10 10 0.6667 9 0.6232 0.6232
Clevante Granville 9 11 NA NA 5 11 11 9 10 0.6667 7 0.6226 0.4842
Kevin Buettner 12 8 8 10 7 11 10 9 10 0.6667 9 0.6159 0.6159
Daniel Baller 14 6 9 8 7 9 10 12 10 0.6667 9 0.6159 0.6159
Stephen Bush 9 7 4 10 9 13 13 9 10 0.6667 9 0.6087 0.6087
Daniel Major 8 10 11 6 8 11 NA 10 10 0.6667 8 0.6016 0.5348
Michael Branson 9 8 8 9 8 11 9 11 10 0.6667 9 0.6014 0.6014
Kamar Morgan 12 6 8 5 8 12 9 12 10 0.6667 9 0.5942 0.5942
Noah Gosswiller 8 7 NA 10 8 NA 10 11 10 0.6667 7 0.5926 0.4609
Darvin Graham 12 7 6 9 8 11 9 NA 10 0.6667 8 0.5902 0.5246
Tara Bridgett 11 8 8 8 NA 9 NA 10 10 0.6667 7 0.5872 0.4567
Nicholas Nguyen 11 8 5 8 7 12 11 9 10 0.6667 9 0.5870 0.5870
Cade Martinez 10 7 8 8 6 11 11 9 10 0.6667 9 0.5797 0.5797
Marcus Evans 11 8 NA 8 7 10 7 9 10 0.6667 8 0.5738 0.5100
Ryan Shipley 11 6 10 8 5 9 11 NA 10 0.6667 8 0.5738 0.5100
Jose Torres Mendoza 12 8 8 8 NA NA 8 9 10 0.6667 7 0.5727 0.4454
Christopher Mulcahy 11 9 7 8 NA 8 9 9 10 0.6667 8 0.5726 0.5090
Trevor Macgavin 12 7 10 8 8 8 9 7 10 0.6667 9 0.5725 0.5725
Jonathan Smith 11 NA 4 10 7 NA 8 11 10 0.6667 7 0.5648 0.4393
Joshua Tracey 12 5 8 6 7 NA 9 13 10 0.6667 8 0.5645 0.5018
Jason Jackson 12 7 5 6 5 12 9 11 10 0.6667 9 0.5580 0.5580
Jack Wheeler 9 6 5 10 8 NA 9 9 10 0.6667 8 0.5323 0.4732
Wayne Schofield 7 5 9 5 7 7 11 11 10 0.6667 9 0.5217 0.5217
Kevin Kehoe 13 7 9 10 8 13 12 11 9 0.6000 9 0.6667 0.6667
Anthony Bloss 13 8 8 11 8 13 11 11 9 0.6000 9 0.6667 0.6667
Keven Talbert 10 7 9 11 9 14 13 9 9 0.6000 9 0.6594 0.6594
Chester Todd 13 8 8 8 9 13 13 10 9 0.6000 9 0.6594 0.6594
Shaun Dahl 14 7 9 11 10 10 10 8 9 0.6000 9 0.6377 0.6377
Jennifer Bouland 13 8 10 7 8 11 10 11 9 0.6000 9 0.6304 0.6304
Matthew Olguin 10 8 9 9 7 12 11 11 9 0.6000 9 0.6232 0.6232
Brian Hollmann NA NA NA 8 8 10 10 11 9 0.6000 6 0.6222 0.4148
Nahir Shepard 11 8 10 8 6 12 8 12 9 0.6000 9 0.6087 0.6087
George Brown 14 7 8 7 6 11 10 12 9 0.6000 9 0.6087 0.6087
Vincent Scannelli 11 7 7 11 8 8 11 12 9 0.6000 9 0.6087 0.6087
Amy Asberry 11 8 6 10 NA 12 9 NA 9 0.6000 7 0.6019 0.4681
Thomas Cho 10 6 NA 11 7 12 NA 8 9 0.6000 7 0.5888 0.4580
Earl Dixon 10 9 6 9 9 NA 11 10 9 0.6000 8 0.5887 0.5233
Rachel Follo 15 8 6 6 9 7 10 11 9 0.6000 9 0.5870 0.5870
Jeffrey Zornes 9 11 6 8 7 10 9 11 9 0.6000 9 0.5797 0.5797
Michael Moore 11 6 7 7 8 12 NA 9 9 0.6000 8 0.5610 0.4987
Richard Conkle 7 6 6 8 7 10 12 11 9 0.6000 9 0.5507 0.5507
Kyle May 10 8 5 6 8 NA 12 10 9 0.6000 8 0.5484 0.4875
Gary Lawrence 10 6 5 5 7 9 9 10 9 0.6000 9 0.5072 0.5072
Keisha Vasquez 8 7 9 9 11 11 9 12 8 0.5333 9 0.6087 0.6087
Ramar Williams 10 8 7 11 8 11 11 10 8 0.5333 9 0.6087 0.6087
Wayne Gokey 13 7 NA 11 NA NA 8 NA 8 0.5333 5 0.6026 0.3348
Jonathon Leslein 10 8 7 10 8 12 10 10 8 0.5333 9 0.6014 0.6014
Karen Richardson 10 9 7 9 11 8 8 12 8 0.5333 9 0.5942 0.5942
Montee Brown 10 6 8 7 8 14 11 10 8 0.5333 9 0.5942 0.5942
Kristen White 14 7 9 9 8 9 9 8 8 0.5333 9 0.5870 0.5870
Cheryl Brown 11 6 9 8 8 10 NA 9 8 0.5333 8 0.5610 0.4987
Robert Martin 7 NA 9 8 8 8 7 NA 8 0.5333 7 0.5189 0.4036
Melissa Printup 8 9 9 6 10 10 10 10 7 0.4667 9 0.5725 0.5725
Sheryl Claiborne-Smith 11 7 NA NA NA 7 7 10 7 0.4667 6 0.5326 0.3551
Andrew Gray 5 8 9 7 NA NA 7 9 7 0.4667 7 0.4727 0.3677
Anthony Brinson 11 7 NA 9 10 11 9 12 6 0.4000 8 0.6148 0.5465
Clayton Grimes 14 NA NA NA NA NA NA NA NA 0.0000 1 0.8750 0.0972
Tanaysa Henderson NA NA NA NA NA 12 NA NA NA 0.0000 1 0.8571 0.0952
Brittany Pillar NA NA NA NA NA 10 12 NA NA 0.0000 2 0.7586 0.1686
Wallace Savage 12 NA NA NA NA NA NA NA NA 0.0000 1 0.7500 0.0833
Brian Holder 12 NA NA NA NA NA NA NA NA 0.0000 1 0.7500 0.0833
Sandra Carter 12 NA NA NA NA NA NA NA NA 0.0000 1 0.7500 0.0833
Terrence Lee 11 NA NA NA NA NA NA NA NA 0.0000 1 0.6875 0.0764
Daniel Gray 11 NA NA NA NA NA NA NA NA 0.0000 1 0.6875 0.0764
Jeremy Krammes 12 NA NA NA NA NA NA 10 NA 0.0000 2 0.6875 0.1528
Heather Kohler 12 NA 7 12 9 11 NA 12 NA 0.0000 6 0.6848 0.4565
Bruce Williams 13 9 10 8 9 13 12 10 NA 0.0000 8 0.6829 0.6070
Jeremy Mounce 12 8 8 NA 10 12 NA NA NA 0.0000 5 0.6579 0.3655
William Schouviller 12 7 9 9 11 13 10 9 NA 0.0000 8 0.6504 0.5781
Paul Seitz 11 9 9 NA 8 10 11 NA NA 0.0000 6 0.6374 0.4249
Jordan Forwood 11 8 6 11 NA 13 NA 10 NA 0.0000 6 0.6277 0.4185
Paul Presti 12 8 9 12 7 11 8 10 NA 0.0000 8 0.6260 0.5564
George Hall 12 NA 8 NA NA NA NA NA NA 0.0000 2 0.6250 0.1389
Kenneth Nielsen 13 8 7 NA 8 9 11 10 NA 0.0000 7 0.6168 0.4797
David Hadley 13 10 8 NA 8 NA 8 NA NA 0.0000 5 0.6104 0.3391
Derrick Elam 13 9 8 11 7 10 8 9 NA 0.0000 8 0.6098 0.5420
Jonathan Knight 13 10 9 6 7 NA 11 NA NA 0.0000 6 0.6022 0.4015
Kevin Green 11 9 NA 8 7 12 NA 8 NA 0.0000 6 0.5978 0.3985
Jeffrey Dusza 11 8 NA NA NA NA NA NA NA 0.0000 2 0.5938 0.1320
Cherylynn Vidal 13 9 8 8 NA NA NA NA NA 0.0000 4 0.5938 0.2639
Adam Konkle 10 9 NA NA NA NA NA NA NA 0.0000 2 0.5938 0.1320
Megan Fitzgerald 8 11 9 10 NA NA 8 10 NA 0.0000 6 0.5895 0.3930
Jason Miranda 10 7 8 NA 9 11 8 NA NA 0.0000 6 0.5824 0.3883
Jennifer Wilson 11 9 10 6 NA 7 11 NA NA 0.0000 6 0.5806 0.3871
Akilah Gamble 9 NA 12 9 6 8 12 6 NA 0.0000 7 0.5794 0.4506
Brian Patterson 11 6 9 9 6 NA 9 13 NA 0.0000 7 0.5780 0.4496
Yiming Hu 12 NA 7 7 6 8 12 9 NA 0.0000 7 0.5701 0.4434
Ronald Schmidt 10 10 5 9 6 8 12 10 NA 0.0000 8 0.5691 0.5059
Joseph Martin 10 7 8 8 8 10 9 NA NA 0.0000 7 0.5607 0.4361
Desmond Jenkins 10 7 7 NA 7 12 8 NA NA 0.0000 6 0.5604 0.3736
Min Choi 10 NA 7 NA 8 7 NA 10 NA 0.0000 5 0.5526 0.3070
Lawrence Thuotte 9 5 12 NA 8 NA NA NA NA 0.0000 4 0.5484 0.2437
Donald Park 9 NA 6 NA NA 10 NA NA NA 0.0000 3 0.5435 0.1812
Anthony Rockemore 13 8 6 8 7 NA 8 NA NA 0.0000 6 0.5376 0.3584
Gabriel Quinones 10 7 6 9 NA 11 8 7 NA 0.0000 7 0.5321 0.4139
Monte Henderson 9 8 NA NA NA NA NA NA NA 0.0000 2 0.5312 0.1180
David Kim 9 8 NA NA NA NA NA NA NA 0.0000 2 0.5312 0.1180
Jamie Ainsleigh-Wong 9 8 9 9 8 5 NA NA NA 0.0000 6 0.5217 0.3478
Robert Lynch 6 9 8 6 9 7 7 12 NA 0.0000 8 0.5203 0.4625
Steven Webster 7 7 9 6 7 9 NA 11 NA 0.0000 7 0.5185 0.4033
Jay Kelly 10 9 7 7 5 10 7 NA NA 0.0000 7 0.5140 0.3998
Zachary Brosemer 8 NA NA NA NA NA NA NA NA 0.0000 1 0.5000 0.0556
Antonio Chapa 8 NA NA NA NA NA NA NA NA 0.0000 1 0.5000 0.0556
Vincent Kandian 9 8 8 7 NA NA NA NA NA 0.0000 4 0.5000 0.2222
Ashlyn Dortch 9 NA NA 8 NA 5 9 6 NA 0.0000 5 0.4805 0.2669
Gabrieal Feiling 10 NA 5 NA NA NA NA NA NA 0.0000 2 0.4688 0.1042
Ashley Johnson 9 NA 6 NA 6 NA NA NA NA 0.0000 3 0.4565 0.1522
Jasprin Smith 6 NA NA NA NA NA NA NA NA 0.0000 1 0.3750 0.0417
Robert Epps NA 6 NA NA NA NA NA NA NA 0.0000 1 0.3750 0.0417

Season Leaderboard

Season Leaderboard (Season Percent)
Week 9
Season Rank Name Donuts Won Weeks Picked Season Percent Adj Season Percent Season Trend
1 Clayton Grimes 0 1 0.8750 0.0972
2 Tanaysa Henderson 0 1 0.8571 0.0952
3 Brittany Pillar 0 2 0.7586 0.1686
4 Brian Holder 0 1 0.7500 0.0833
4 Sandra Carter 0 1 0.7500 0.0833
4 Wallace Savage 0 1 0.7500 0.0833
7 Steven Maisonneuve 1 5 0.7432 0.4129
8 Ryan Wiggins 0 1 0.7333 0.0815
9 Robert Cunningham 0 9 0.7174 0.7174
10 Matthew Blair 0 4 0.7167 0.3185
11 Chris Papageorge 0 9 0.7101 0.7101
12 Robert Gelo 1 9 0.7029 0.7029
13 Randolph Tidd 0 8 0.6935 0.6164
14 Daniel Gray 0 1 0.6875 0.0764
14 Jeremy Krammes 0 2 0.6875 0.1528
14 Terrence Lee 0 1 0.6875 0.0764
17 Nathan Brown 1 8 0.6855 0.6093
18 Heather Kohler 0 6 0.6848 0.4565
19 Bruce Williams 0 8 0.6829 0.6070
20 Michael Pacifico 1 9 0.6812 0.6812
21 Aubrey Conn 0 9 0.6739 0.6739
21 Marc Agne 1 9 0.6739 0.6739
23 Nicholas Cinco 0 7 0.6698 0.5210
24 Anthony Bloss 0 9 0.6667 0.6667
24 Christopher Sims 1 9 0.6667 0.6667
24 David Dupree 0 9 0.6667 0.6667
24 George Sweet 1 9 0.6667 0.6667
24 Kevin Kehoe 0 9 0.6667 0.6667
24 Michael Linder 0 7 0.6667 0.5185
24 Ryan Cvik 0 9 0.6667 0.6667
24 Travis Delagardelle 1 9 0.6667 0.6667
32 Chester Todd 1 9 0.6594 0.6594
32 Erik Neumann 0 9 0.6594 0.6594
32 Keven Talbert 2 9 0.6594 0.6594
35 Jeremy Mounce 0 5 0.6579 0.3655
36 Bradley Hobson 0 9 0.6522 0.6522
36 Heather Ellenberger 0 9 0.6522 0.6522
36 Matthew Schultz 0 9 0.6522 0.6522
36 Michelle Fraterrigo 0 9 0.6522 0.6522
36 Randy Dick 1 9 0.6522 0.6522
36 Shawn Carden 0 9 0.6522 0.6522
42 Pamela Augustine 0 7 0.6509 0.5063
43 Patrick Tynan 0 8 0.6504 0.5781
43 William Schouviller 1 8 0.6504 0.5781
45 Jeremy Stieler 0 9 0.6449 0.6449
46 Bryson Scott 0 8 0.6393 0.5683
46 Karen Coleman 0 8 0.6393 0.5683
48 Gregory Brown 1 9 0.6377 0.6377
48 Michael Moss 0 9 0.6377 0.6377
48 Rafael Torres 0 9 0.6377 0.6377
48 Shaun Dahl 0 9 0.6377 0.6377
52 Paul Seitz 0 6 0.6374 0.4249
53 Philip Driskill 1 8 0.6371 0.5663
54 Steward Hogans 0 5 0.6329 0.3516
55 Robert Sokol 0 7 0.6321 0.4916
56 James Small 0 8 0.6311 0.5610
57 Brayant Rivera 0 9 0.6304 0.6304
57 Daniel Halse 0 9 0.6304 0.6304
57 Darryle Sellers 0 9 0.6304 0.6304
57 Jared Kaanga 0 9 0.6304 0.6304
57 Jeffrey Rudderforth 0 9 0.6304 0.6304
57 Jennifer Bouland 0 9 0.6304 0.6304
57 Nicole Dike 0 9 0.6304 0.6304
64 Jordan Forwood 0 6 0.6277 0.4185
65 Brandon Parks 0 7 0.6262 0.4870
66 Paul Presti 0 8 0.6260 0.5564
67 George Hall 0 2 0.6250 0.1389
68 Antonio Mitchell 0 9 0.6232 0.6232
68 Diance Durand 1 9 0.6232 0.6232
68 Jason Schattel 0 9 0.6232 0.6232
68 Matthew Olguin 0 9 0.6232 0.6232
68 Pablo Burgosramos 1 9 0.6232 0.6232
68 Richard Beeghley 1 9 0.6232 0.6232
74 Clevante Granville 0 7 0.6226 0.4842
75 Brian Hollmann 0 6 0.6222 0.4148
76 Ryan Baum 0 8 0.6210 0.5520
77 Kenneth Nielsen 0 7 0.6168 0.4797
78 Daniel Baller 0 9 0.6159 0.6159
78 Kevin Buettner 0 9 0.6159 0.6159
80 Anthony Brinson 0 8 0.6148 0.5465
81 David Hadley 0 5 0.6104 0.3391
82 Derrick Elam 0 8 0.6098 0.5420
83 George Brown 0 9 0.6087 0.6087
83 Keisha Vasquez 1 9 0.6087 0.6087
83 Nahir Shepard 0 9 0.6087 0.6087
83 Ramar Williams 0 9 0.6087 0.6087
83 Stephen Bush 1 9 0.6087 0.6087
83 Thomas Mccoy 0 9 0.6087 0.6087
83 Vincent Scannelli 0 9 0.6087 0.6087
83 Walter Archambo 0 9 0.6087 0.6087
91 Wayne Gokey 0 5 0.6026 0.3348
92 David Plate 0 6 0.6022 0.4015
92 Jonathan Knight 0 6 0.6022 0.4015
94 Amy Asberry 0 7 0.6019 0.4681
95 Daniel Major 0 8 0.6016 0.5348
96 David Humes 0 9 0.6014 0.6014
96 Jennifer Arty 0 9 0.6014 0.6014
96 Jonathon Leslein 0 9 0.6014 0.6014
96 Michael Branson 0 9 0.6014 0.6014
96 Scott Lefton 0 9 0.6014 0.6014
101 Thomas Brenstuhl 0 8 0.5984 0.5319
102 Kevin Green 0 6 0.5978 0.3985
103 Kamar Morgan 0 9 0.5942 0.5942
103 Karen Richardson 1 9 0.5942 0.5942
103 Montee Brown 1 9 0.5942 0.5942
103 Terry Hardison 0 9 0.5942 0.5942
107 Adam Konkle 0 2 0.5938 0.1320
107 Cherylynn Vidal 0 4 0.5938 0.2639
107 Jeffrey Dusza 0 2 0.5938 0.1320
110 Noah Gosswiller 0 7 0.5926 0.4609
111 Darvin Graham 0 8 0.5902 0.5246
112 Megan Fitzgerald 0 6 0.5895 0.3930
113 Thomas Cho 0 7 0.5888 0.4580
114 Earl Dixon 0 8 0.5887 0.5233
115 Tara Bridgett 0 7 0.5872 0.4567
116 Edward Ford 0 9 0.5870 0.5870
116 Kristen White 0 9 0.5870 0.5870
116 Louie Renew 1 9 0.5870 0.5870
116 Nicholas Nguyen 0 9 0.5870 0.5870
116 Rachel Follo 1 9 0.5870 0.5870
116 Zechariah Ziebarth 0 9 0.5870 0.5870
122 George Mancini 0 7 0.5849 0.4549
123 Jason Miranda 0 6 0.5824 0.3883
124 Jennifer Wilson 0 6 0.5806 0.3871
125 Bunnaro Sun 0 9 0.5797 0.5797
125 Cade Martinez 0 9 0.5797 0.5797
125 Jeffrey Zornes 0 9 0.5797 0.5797
128 Akilah Gamble 1 7 0.5794 0.4506
129 Brian Patterson 0 7 0.5780 0.4496
130 Marcus Evans 0 8 0.5738 0.5100
130 Ryan Shipley 0 8 0.5738 0.5100
132 Jose Torres Mendoza 0 7 0.5727 0.4454
133 Christopher Mulcahy 0 8 0.5726 0.5090
134 Melissa Printup 0 9 0.5725 0.5725
134 Trevor Macgavin 0 9 0.5725 0.5725
136 Yiming Hu 0 7 0.5701 0.4434
137 Ronald Schmidt 0 8 0.5691 0.5059
138 Jonathan Smith 0 7 0.5648 0.4393
139 Joshua Tracey 0 8 0.5645 0.5018
140 Cheryl Brown 0 8 0.5610 0.4987
140 Michael Moore 0 8 0.5610 0.4987
142 Joseph Martin 0 7 0.5607 0.4361
143 Desmond Jenkins 0 6 0.5604 0.3736
144 Jason Jackson 0 9 0.5580 0.5580
145 Min Choi 0 5 0.5526 0.3070
146 Richard Conkle 0 9 0.5507 0.5507
147 Kyle May 0 8 0.5484 0.4875
147 Lawrence Thuotte 1 4 0.5484 0.2437
149 Donald Park 0 3 0.5435 0.1812
150 Anthony Rockemore 0 6 0.5376 0.3584
151 Sheryl Claiborne-Smith 0 6 0.5326 0.3551
152 Jack Wheeler 0 8 0.5323 0.4732
153 Gabriel Quinones 0 7 0.5321 0.4139
154 David Kim 0 2 0.5312 0.1180
154 Monte Henderson 0 2 0.5312 0.1180
156 Jamie Ainsleigh-Wong 0 6 0.5217 0.3478
156 Wayne Schofield 0 9 0.5217 0.5217
158 Robert Lynch 0 8 0.5203 0.4625
159 Robert Martin 0 7 0.5189 0.4036
160 Steven Webster 0 7 0.5185 0.4033
161 Jay Kelly 0 7 0.5140 0.3998
162 Gary Lawrence 0 9 0.5072 0.5072
163 Antonio Chapa 0 1 0.5000 0.0556
163 Vincent Kandian 0 4 0.5000 0.2222
163 Zachary Brosemer 0 1 0.5000 0.0556
166 Ashlyn Dortch 0 5 0.4805 0.2669
167 Andrew Gray 0 7 0.4727 0.3677
168 Gabrieal Feiling 0 2 0.4688 0.1042
169 Ashley Johnson 0 3 0.4565 0.1522
170 Jasprin Smith 0 1 0.3750 0.0417
170 Robert Epps 0 1 0.3750 0.0417

Adjusted Season Leaderboard

Season Leaderboard (Adjusted Season Percent)
Week 9
Season Rank Name Donuts Won Weeks Picked Season Percent Adj Season Percent Season Trend
1 Robert Cunningham 0 9 0.7174 0.7174
2 Chris Papageorge 0 9 0.7101 0.7101
3 Robert Gelo 1 9 0.7029 0.7029
4 Michael Pacifico 1 9 0.6812 0.6812
5 Aubrey Conn 0 9 0.6739 0.6739
5 Marc Agne 1 9 0.6739 0.6739
7 Anthony Bloss 0 9 0.6667 0.6667
7 Christopher Sims 1 9 0.6667 0.6667
7 David Dupree 0 9 0.6667 0.6667
7 George Sweet 1 9 0.6667 0.6667
7 Kevin Kehoe 0 9 0.6667 0.6667
7 Ryan Cvik 0 9 0.6667 0.6667
7 Travis Delagardelle 1 9 0.6667 0.6667
14 Chester Todd 1 9 0.6594 0.6594
14 Erik Neumann 0 9 0.6594 0.6594
14 Keven Talbert 2 9 0.6594 0.6594
17 Bradley Hobson 0 9 0.6522 0.6522
17 Heather Ellenberger 0 9 0.6522 0.6522
17 Matthew Schultz 0 9 0.6522 0.6522
17 Michelle Fraterrigo 0 9 0.6522 0.6522
17 Randy Dick 1 9 0.6522 0.6522
17 Shawn Carden 0 9 0.6522 0.6522
23 Jeremy Stieler 0 9 0.6449 0.6449
24 Gregory Brown 1 9 0.6377 0.6377
24 Michael Moss 0 9 0.6377 0.6377
24 Rafael Torres 0 9 0.6377 0.6377
24 Shaun Dahl 0 9 0.6377 0.6377
28 Brayant Rivera 0 9 0.6304 0.6304
28 Daniel Halse 0 9 0.6304 0.6304
28 Darryle Sellers 0 9 0.6304 0.6304
28 Jared Kaanga 0 9 0.6304 0.6304
28 Jeffrey Rudderforth 0 9 0.6304 0.6304
28 Jennifer Bouland 0 9 0.6304 0.6304
28 Nicole Dike 0 9 0.6304 0.6304
35 Antonio Mitchell 0 9 0.6232 0.6232
35 Diance Durand 1 9 0.6232 0.6232
35 Jason Schattel 0 9 0.6232 0.6232
35 Matthew Olguin 0 9 0.6232 0.6232
35 Pablo Burgosramos 1 9 0.6232 0.6232
35 Richard Beeghley 1 9 0.6232 0.6232
41 Randolph Tidd 0 8 0.6935 0.6164
42 Daniel Baller 0 9 0.6159 0.6159
42 Kevin Buettner 0 9 0.6159 0.6159
44 Nathan Brown 1 8 0.6855 0.6093
45 George Brown 0 9 0.6087 0.6087
45 Keisha Vasquez 1 9 0.6087 0.6087
45 Nahir Shepard 0 9 0.6087 0.6087
45 Ramar Williams 0 9 0.6087 0.6087
45 Stephen Bush 1 9 0.6087 0.6087
45 Thomas Mccoy 0 9 0.6087 0.6087
45 Vincent Scannelli 0 9 0.6087 0.6087
45 Walter Archambo 0 9 0.6087 0.6087
53 Bruce Williams 0 8 0.6829 0.6070
54 David Humes 0 9 0.6014 0.6014
54 Jennifer Arty 0 9 0.6014 0.6014
54 Jonathon Leslein 0 9 0.6014 0.6014
54 Michael Branson 0 9 0.6014 0.6014
54 Scott Lefton 0 9 0.6014 0.6014
59 Kamar Morgan 0 9 0.5942 0.5942
59 Karen Richardson 1 9 0.5942 0.5942
59 Montee Brown 1 9 0.5942 0.5942
59 Terry Hardison 0 9 0.5942 0.5942
63 Edward Ford 0 9 0.5870 0.5870
63 Kristen White 0 9 0.5870 0.5870
63 Louie Renew 1 9 0.5870 0.5870
63 Nicholas Nguyen 0 9 0.5870 0.5870
63 Rachel Follo 1 9 0.5870 0.5870
63 Zechariah Ziebarth 0 9 0.5870 0.5870
69 Bunnaro Sun 0 9 0.5797 0.5797
69 Cade Martinez 0 9 0.5797 0.5797
69 Jeffrey Zornes 0 9 0.5797 0.5797
72 Patrick Tynan 0 8 0.6504 0.5781
72 William Schouviller 1 8 0.6504 0.5781
74 Melissa Printup 0 9 0.5725 0.5725
74 Trevor Macgavin 0 9 0.5725 0.5725
76 Bryson Scott 0 8 0.6393 0.5683
76 Karen Coleman 0 8 0.6393 0.5683
78 Philip Driskill 1 8 0.6371 0.5663
79 James Small 0 8 0.6311 0.5610
80 Jason Jackson 0 9 0.5580 0.5580
81 Paul Presti 0 8 0.6260 0.5564
82 Ryan Baum 0 8 0.6210 0.5520
83 Richard Conkle 0 9 0.5507 0.5507
84 Anthony Brinson 0 8 0.6148 0.5465
85 Derrick Elam 0 8 0.6098 0.5420
86 Daniel Major 0 8 0.6016 0.5348
87 Thomas Brenstuhl 0 8 0.5984 0.5319
88 Darvin Graham 0 8 0.5902 0.5246
89 Earl Dixon 0 8 0.5887 0.5233
90 Wayne Schofield 0 9 0.5217 0.5217
91 Nicholas Cinco 0 7 0.6698 0.5210
92 Michael Linder 0 7 0.6667 0.5185
93 Marcus Evans 0 8 0.5738 0.5100
93 Ryan Shipley 0 8 0.5738 0.5100
95 Christopher Mulcahy 0 8 0.5726 0.5090
96 Gary Lawrence 0 9 0.5072 0.5072
97 Pamela Augustine 0 7 0.6509 0.5063
98 Ronald Schmidt 0 8 0.5691 0.5059
99 Joshua Tracey 0 8 0.5645 0.5018
100 Cheryl Brown 0 8 0.5610 0.4987
100 Michael Moore 0 8 0.5610 0.4987
102 Robert Sokol 0 7 0.6321 0.4916
103 Kyle May 0 8 0.5484 0.4875
104 Brandon Parks 0 7 0.6262 0.4870
105 Clevante Granville 0 7 0.6226 0.4842
106 Kenneth Nielsen 0 7 0.6168 0.4797
107 Jack Wheeler 0 8 0.5323 0.4732
108 Amy Asberry 0 7 0.6019 0.4681
109 Robert Lynch 0 8 0.5203 0.4625
110 Noah Gosswiller 0 7 0.5926 0.4609
111 Thomas Cho 0 7 0.5888 0.4580
112 Tara Bridgett 0 7 0.5872 0.4567
113 Heather Kohler 0 6 0.6848 0.4565
114 George Mancini 0 7 0.5849 0.4549
115 Akilah Gamble 1 7 0.5794 0.4506
116 Brian Patterson 0 7 0.5780 0.4496
117 Jose Torres Mendoza 0 7 0.5727 0.4454
118 Yiming Hu 0 7 0.5701 0.4434
119 Jonathan Smith 0 7 0.5648 0.4393
120 Joseph Martin 0 7 0.5607 0.4361
121 Paul Seitz 0 6 0.6374 0.4249
122 Jordan Forwood 0 6 0.6277 0.4185
123 Brian Hollmann 0 6 0.6222 0.4148
124 Gabriel Quinones 0 7 0.5321 0.4139
125 Steven Maisonneuve 1 5 0.7432 0.4129
126 Robert Martin 0 7 0.5189 0.4036
127 Steven Webster 0 7 0.5185 0.4033
128 David Plate 0 6 0.6022 0.4015
128 Jonathan Knight 0 6 0.6022 0.4015
130 Jay Kelly 0 7 0.5140 0.3998
131 Kevin Green 0 6 0.5978 0.3985
132 Megan Fitzgerald 0 6 0.5895 0.3930
133 Jason Miranda 0 6 0.5824 0.3883
134 Jennifer Wilson 0 6 0.5806 0.3871
135 Desmond Jenkins 0 6 0.5604 0.3736
136 Andrew Gray 0 7 0.4727 0.3677
137 Jeremy Mounce 0 5 0.6579 0.3655
138 Anthony Rockemore 0 6 0.5376 0.3584
139 Sheryl Claiborne-Smith 0 6 0.5326 0.3551
140 Steward Hogans 0 5 0.6329 0.3516
141 Jamie Ainsleigh-Wong 0 6 0.5217 0.3478
142 David Hadley 0 5 0.6104 0.3391
143 Wayne Gokey 0 5 0.6026 0.3348
144 Matthew Blair 0 4 0.7167 0.3185
145 Min Choi 0 5 0.5526 0.3070
146 Ashlyn Dortch 0 5 0.4805 0.2669
147 Cherylynn Vidal 0 4 0.5938 0.2639
148 Lawrence Thuotte 1 4 0.5484 0.2437
149 Vincent Kandian 0 4 0.5000 0.2222
150 Donald Park 0 3 0.5435 0.1812
151 Brittany Pillar 0 2 0.7586 0.1686
152 Jeremy Krammes 0 2 0.6875 0.1528
153 Ashley Johnson 0 3 0.4565 0.1522
154 George Hall 0 2 0.6250 0.1389
155 Adam Konkle 0 2 0.5938 0.1320
155 Jeffrey Dusza 0 2 0.5938 0.1320
157 David Kim 0 2 0.5312 0.1180
157 Monte Henderson 0 2 0.5312 0.1180
159 Gabrieal Feiling 0 2 0.4688 0.1042
160 Clayton Grimes 0 1 0.8750 0.0972
161 Tanaysa Henderson 0 1 0.8571 0.0952
162 Brian Holder 0 1 0.7500 0.0833
162 Sandra Carter 0 1 0.7500 0.0833
162 Wallace Savage 0 1 0.7500 0.0833
165 Ryan Wiggins 0 1 0.7333 0.0815
166 Daniel Gray 0 1 0.6875 0.0764
166 Terrence Lee 0 1 0.6875 0.0764
168 Antonio Chapa 0 1 0.5000 0.0556
168 Zachary Brosemer 0 1 0.5000 0.0556
170 Jasprin Smith 0 1 0.3750 0.0417
170 Robert Epps 0 1 0.3750 0.0417

Data

---
title: "2024 NFL Moneyline Picks"
output: 
  flexdashboard::flex_dashboard:
    theme:
      version: 4
      bootswatch: spacelab
    orientation: rows
    vertical_layout: fill
    social: ["menu"]
    source_code: embed
    navbar:
      - { title: "Created by: Daniel Baller", icon: "fa-github", href: "https://github.com/danielpballer"  }
---


```{r setup, include=FALSE}
#    source_code: embed
library(flexdashboard)
library(tidyverse)
library(data.table)
library(formattable)
library(ggpubr)
library(ggrepel)
library(gt)
library(glue)
library(ggthemes)
library(hrbrthemes)
library(sparkline)
library(plotly)
library(htmlwidgets)
library(mdthemes)
library(ggtext)
library(ggnewscale)
library(DT)
source("./Functions/functions2.R")

thematic::thematic_rmd(font = "auto")

```

```{r Reading in our picks files, include=FALSE}
current_week = 9 #Set what week it is
week_1 = read_csv("./CSV_Data_Files/2024 NFL Week 1.csv") %>% 
  mutate(Name = str_to_title(Name))
week_2 = read_csv("./CSV_Data_Files/2024 NFL Week 2.csv")%>% 
  mutate(Name = str_to_title(Name))
week_3 = read_csv("./CSV_Data_Files/2024 NFL Week 3.csv")%>% 
  mutate(Name = str_to_title(Name))
week_4 = read_csv("./CSV_Data_Files/2024 NFL Week 4.csv")%>%
 mutate(Name = str_to_title(Name))
week_5 = read_csv("./CSV_Data_Files/2024 NFL Week 5.csv")%>% 
  mutate(Name = str_to_title(Name))
week_6 = read_csv("./CSV_Data_Files/2024 NFL Week 6.csv")%>% 
  mutate(Name = str_to_title(Name))
week_7 = read_csv("./CSV_Data_Files/2024 NFL Week 7.csv")%>% 
  mutate(Name = str_to_title(Name))
week_8 = read_csv("./CSV_Data_Files/2024 NFL Week 8.csv")%>% 
  mutate(Name = str_to_title(Name))
 week_9 = read_csv("./CSV_Data_Files/2024 NFL Week 9.csv")%>% 
  mutate(Name = str_to_title(Name))
# week_10 = read_csv("./CSV_Data_Files/2024 NFL Week 10.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_11 = read_csv("./CSV_Data_Files/2024 NFL Week 11.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_12 = read_csv("./CSV_Data_Files/2024 NFL Week 12.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_13 = read_csv("./CSV_Data_Files/2024 NFL Week 13.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_14 = read_csv("./CSV_Data_Files/2024 NFL Week 14.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_15 = read_csv("./CSV_Data_Files/2024 NFL Week 15.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_16 = read_csv("./CSV_Data_Files/2024 NFL Week 16.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_17 = read_csv("./CSV_Data_Files/2024 NFL Week 17.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_18 = read_csv("./CSV_Data_Files/2024 NFL Week 18.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_19 = read_csv("./CSV_Data_Files/2024 NFL Wild Card.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_20 = read_csv("./CSV_Data_Files/2024 NFL Divisional Round.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_21 = read_csv("./CSV_Data_Files/2024 NFL Conference Round.csv")%>% 
#  mutate(Name = str_to_title(Name))
# week_22 = read_csv("./CSV_Data_Files/2024 NFL Super Bowl.csv")%>% 
#  mutate(Name = str_to_title(Name))

#reading in scores
Scores = read_csv(glue::glue("./CSV_Data_Files/NFL_Scores_{current_week}.csv")) 

#reading in CBS Prediction Records
cbs = read_csv(glue::glue("./CSV_Data_Files/CBS_Experts_{current_week}.csv")) %>% 
  mutate(Percent = round(Percent,4))
cbs_season = read_csv(glue::glue("./CSV_Data_Files/CBS_Experts_Season_{current_week}.csv"))

#reading in ESPN Prediction Records
espn = read_csv(glue::glue("./CSV_Data_Files/ESPN_Experts_{current_week}.csv"))%>% 
  mutate(Percent = round(Percent,4))
espn_season = read_csv(glue::glue("./CSV_Data_Files/ESPN_Experts_Season_{current_week}.csv"))%>% 
  mutate(Percent = round(Percent,4))

#Odds not working for the 2024 season.  Need to fix scrape code for next year.
#Reading in the moneyline odds for each team and cleaning the team names
# odds_wk1 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_1.csv"))
# odds_wk2 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_2.csv"))
# odds_wk3 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_3.csv"))
# odds_wk4 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_4.csv"))
# odds_wk5 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_5.csv"))
# odds_wk6 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_6.csv"))
# odds_wk7 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_7.csv"))
# odds_wk8 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_8.csv"))
# odds_wk9 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_9.csv"))
# odds_wk10 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_10.csv"))
# odds_wk11 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_11.csv"))
# odds_wk12 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_12.csv"))
# odds_wk13 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_13.csv"))
# odds_wk14 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_14.csv"))
# odds_wk15 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_15.csv"))
# odds_wk16 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_16.csv"))
# odds_wk17 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_17.csv"))
# odds_wk18 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_18.csv"))
# odds_wk19 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_19.csv"))
# odds_wk20 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_20.csv"))
# odds_wk21 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_21.csv"))
# odds_wk22 = read_csv(glue::glue("./CSV_Data_Files/Moneyline_Odds_22.csv"))

####################UPDATE THESE###############################
inst.picks = list(week_1, week_2, week_3, week_4, week_5, week_6, week_7, week_8 , week_9) #, week_10, week_11, week_12, week_13, week_14, week_15, week_16, week_17 , week_18, week_19 , week_20, week_21, week_22) #add in the additional weeks
# odds = rbind(odds_wk1, odds_wk2, odds_wk3, odds_wk4, odds_wk5, odds_wk6, odds_wk7, odds_wk8,
#              odds_wk9, odds_wk10, odds_wk11, odds_wk12) #add in the additional weeks
####################END OF UPDATE##############################

weeks = as.list(seq(1:current_week)) #creating a list of each week number
```

```{r read in scores clean data, include=FALSE}
#Cleaning Odds Data
# cl_odds = odds_cleaning(odds)

#Cleaning scores data
Scores = cleaning2(Scores)

#creating a list of winners for each week
winners = map(weeks, weekly_winners)

#creating a vector of this weeks winners
this_week = pull(winners[[length(winners)]])  

#Getting the number of games for each week
weekly_number_of_games = map_dbl(weeks, week_number_games)
```

```{r Group Predictions, include=FALSE}
#Creating the list of everyones predictions each week.
games = map(inst.picks, games_fn)

#Creating the prediction table.  
pred_table = map(games, pred_table_fn)

#Adding who won to the predictions
with_winners = map2(pred_table, winners, adding_winners)

#Creating results for each week.
results = map2(with_winners,weekly_number_of_games, results_fn)
```


```{r Displaying Group Results, echo=FALSE}
#Displaying the group results

inst_group_table = results[[length(results)]] %>% gt() %>% 
  cols_align(
    align = "center") %>% 
   tab_header(
    title = md("This Week's Predictions"),
    #subtitle = md(glue("Week {length(results)}"))
    ) %>% 
   tab_style(
    style = cell_text(color = "red", weight = "bold"),
    locations = cells_body(
      columns = c(Correct),
      rows = Correct =="No"
    )) %>% 
   tab_style(
    style = cell_text(color = "green", weight = "bold"),
    locations = cells_body(
      columns = c(Correct),
      rows = Correct =="Yes"
    )) %>% 
  tab_options(
    data_row.padding = px(3),
    container.height = "100%"
   )
```

```{r Weekly and season Group Results, include=FALSE}
# Printing the weekly and season win percentage     

#how many games correct, incorrect, and not picked each week
weekly_group_correct = map(results, weekly_group_correct_fn)  

#how many games were picked each week
weekly_games_picked = map2(weekly_group_correct, weekly_number_of_games, weekly_games_picked_fn)

#Calculating the number of correct picks for each week
weekly_group_correct_picks = map(weekly_group_correct, weekly_group_correct_picks_fn)

# Code to manually hard code in week where we get 0 games correct
# ##### Remove this line before next season 
# weekly_group_correct_picks[[21]]=0

#Calculating weekly win percentage
weekly_win_percentage = map2(weekly_group_correct_picks, weekly_games_picked, weekly_win_percentage_fn)

#Calculating season win percentage
season_win_percentage = round(sum(unlist(weekly_group_correct_picks))/sum(unlist(weekly_games_picked)),4)

#Calculating number of games picked this season
season_games = sum(unlist(weekly_games_picked))

#calculating season wins
season_wins = sum(unlist(weekly_group_correct_picks))

#calculating the number of people who picked this week
Total = dim(inst.picks[[length(weeks)]])[1]
```

```{r plotting group results, include=FALSE}
#Previous Weeks
group_season_for_plotting = unlist(weekly_win_percentage) %>% as.data.frame() %>% 
  rename(`Win Percentage` = ".") %>% 
  add_column(Week = unlist(weeks))
```

```{r Plotting the group results, echo=FALSE}
inst_group_season_plot = group_season_for_plotting %>% 
ggplot(aes(x = as.factor(Week), y = `Win Percentage`))+
  geom_point()+
  geom_path(aes(x = Week))+
  ylim(c(0, 1)) +
  xlab("NFL Week") + 
  ylab("Correct Percentage")+
  ggtitle("Weekly Group Correct Percentage")+
  theme_classic()+
  theme(plot.title = element_text(hjust = 0.5, size = 18))
```

```{r beating cbs week, include=FALSE}
#Creating a list of correct percentages for each week.
cbs_weekly_percent = map(weeks, cbs_percent)

#Creating a list of how many cbs experts we beat each week.
cbs_experts_beat = map2(cbs_weekly_percent, weekly_win_percentage, experts_beat)

#Creating a list of how many cbs experts picked each week.  
cbs_experts_total = map(cbs_weekly_percent, experts_tot)
```

```{r beating cbs season, include=FALSE}
#Creating a list of correct percentages for each week.
cbs_season_percent = map(weeks, cbs_season_percent)

#Creating a list of how many cbs experts we beat each week.
cbs_experts_beat_season = map2(cbs_season_percent, season_win_percentage, experts_beat)

#Creating a list of how many cbs experts picked each week.  
cbs_experts_season_total = map(cbs_season_percent, experts_tot)
```

```{r beating ESPN week, include=FALSE}
#Creating a list of correct percentages for each week.
espn_weekly_percent = map(weeks, espn_percent)

#Creating a list of how many cbs experts we beat each week.
espn_experts_beat = map2(espn_weekly_percent, weekly_win_percentage, experts_beat)

#Creating a list of how many cbs experts picked each week.  
espn_experts_total = map(espn_weekly_percent, experts_tot)
```

```{r beating ESPN season, include=FALSE}
#Creating a list of correct percentages for each week.
espn_season_percent = map(weeks, espn_season_percent)

#Creating a list of how many cbs experts we beat each week.
espn_experts_beat_season = map2(espn_season_percent, season_win_percentage, experts_beat)

#Creating a list of how many cbs experts picked each week.  
espn_experts_season_total = map(espn_season_percent, experts_tot)
```

```{r individual results, include=FALSE}
#Creating a list of individual results for each week.
weekly_indiv = pmap(list(inst.picks, winners, weeks), indiv_weekly_pred)

#Combining each week into one dataframe and calculating percentage Correct for this week.  
full_season = weekly_indiv %>% reduce(full_join, by = "Name") %>% 
  mutate(Percent = round(pull(.[,ncol(.)]/weekly_number_of_games[[length(weekly_number_of_games)]]),4)) 

#Creating a dataframe with only the weekly picks
a = full_season %>% select(starts_with("Week"))

#Creating a vector of how many weeks each person picked over the season
tot_week = NULL
help = NULL
for (i in 1:dim(a)[1]){
  for(j in 1:length(a)){
    help[j] = ifelse(is.na(a[i,j])==T,0,1)
    tot_week[i] = sum(help)
  }
}

#Creating a vector of how many games each person picked over the season
tot_picks= NULL
help = NULL
for (i in 1:dim(a)[1]){
  for(j in 1:length(a)){
    help[j] = unlist(weekly_games_picked)[j]*ifelse(is.na(a[i,j])==T,0,1)
    tot_picks[i] = sum(help)
  }
}

#Creatign a vector of how many games each person picked correct over the season
tot_correct = NULL
help = NULL
for (i in 1:dim(a)[1]){
  tot_correct[i] = sum(a[i,], na.rm = T)
}

#adding how many weeks each person picked, season correct percentage, and adjusted season percentag to the data frame and sorting the data
indiv_disp = full_season %>% add_column(`Weeks Picked` = tot_week) %>%
  add_column(tot_correct)%>%
  add_column(tot_picks)%>%
  mutate(`Season Percent` = round(tot_correct/tot_picks,4))%>%
  mutate(`Adj Season Percent` = round(`Season Percent`*(tot_week/length(a)),4)) %>%
  select(-tot_correct, -tot_picks) %>%
  arrange(desc(Percent), desc(`Season Percent`)) %>%
  mutate(Percent = ifelse(is.na(Percent)==T, 0, Percent))
```


```{r individual percentages, include=FALSE}
#Calculating individual percentages for each week.
weekly_indiv_percent = map2(weekly_indiv, as.list(weekly_number_of_games), indiv_percent) %>% reduce(full_join, by = "Name")

weekly_indiv_percent_plot = weekly_indiv_percent %>% 
  pivot_longer(cols = starts_with("Week"), names_to = "Week", values_to = "Percent")%>%
  mutate(Percent = ifelse(is.na(Percent)==T, 0, Percent)) %>% 
  mutate(Week = as.factor(Week))

levels = NULL
for(i in 1:length(weeks)){
  levels[i] = glue("Week {i}")  
}

weekly_indiv_percent_plot = weekly_indiv_percent_plot %>%
  mutate(Week = factor(Week, levels))
```

```{r sparklines, include=FALSE}
#adding sparklines
plot_group = function(name, df){
  plot_object = 
    ggplot(data = df,
           aes(x = as.factor(Week), y=Percent, group = 1))+
    geom_path(size = 7)+
    scale_y_continuous(limits = c(0,1))+
    theme_void()+
    theme(legend.position = "none")
  return(plot_object)
}

sparklines = 
  weekly_indiv_percent_plot %>% 
  group_by(Name) %>% 
  nest() %>% 
  mutate(plot = map2(Name, data, plot_group)) %>% 
  select(-data)
  
indiv_disp_2 = indiv_disp %>% 
  inner_join(sparklines, by = "Name") %>% 
  mutate(`Season Trend` = NA)
```

```{r Printing Individual Table2, echo=FALSE}
# Printing the individual Table
indiv_table = indiv_disp_2 %>% gt() %>% 
  cols_align(
    align = "center") %>% 
   tab_header(
    title = md("Individual Results"),
    subtitle = md(glue("Week {length(weeks)}"))
    ) %>% 
   tab_style(
    style = cell_text(color = "red", weight = "bold"),
    locations = cells_body(
      columns = c(Percent),
      rows = Percent<.5
    )) %>% 
   tab_style(
    style = cell_text(color = "green", weight = "bold"),
    locations = cells_body(
      columns = c(Percent),
      rows = Percent>.5
    )) %>% 
     tab_style(
    style = cell_text(color = "red", weight = "bold"),
    locations = cells_body(
      columns = c(`Season Percent`),
      rows = `Season Percent`<.5
    )) %>% 
   tab_style(
    style = cell_text(color = "green", weight = "bold"),
    locations = cells_body(
      columns = c(`Season Percent`),
      rows = `Season Percent`>.5
    ))%>% 
     tab_style(
    style = cell_text(color = "red", weight = "bold"),
    locations = cells_body(
      columns = c(`Adj Season Percent`),
      rows = `Adj Season Percent`<.5
    )) %>% 
   tab_style(
    style = cell_text(color = "green", weight = "bold"),
    locations = cells_body(
      columns = c(`Adj Season Percent`),
      rows = `Adj Season Percent`>.5
    )) %>% 
  tab_options(
    container.width = pct(100),
    data_row.padding = px(1),
    container.height = "100%"
   ) %>%
    tab_spanner(
    label = "Weekly # Correct",
    columns = starts_with(c("Week "))
  ) %>% 
  text_transform(
    locations = cells_body(c(`Season Trend`)),
    fn = function(x){
      map(indiv_disp_2$plot, ggplot_image, height = px(30), aspect_ratio = 4)
                 }) %>%
  cols_hide(c(plot))

indiv_winners = indiv_disp_2 %>% filter(Percent == max(Percent)) %>% select(Name) %>% pull() %>% paste(collapse = ", ")
indiv_season = indiv_disp_2 %>% filter(`Season Percent` == max(`Season Percent`)) %>% select(Name) %>% pull() %>% paste(collapse = ", ")
indiv_season_adj = indiv_disp_2 %>% filter(`Adj Season Percent` == max(`Adj Season Percent`)) %>% select(Name) %>% pull()%>% paste(collapse = ", ")
```

```{r Printing Season Leaderboard, echo=FALSE}
# Printing the Season Leaderboard
  
season_leaderboard_disp = indiv_disp_2 %>% select(Name, starts_with("Week ")) %>% 
  pivot_longer(starts_with("Week"),names_to = "Week", values_to = "Correct") %>% 
  group_by(Week) %>% 
  mutate(Correct = case_when(is.na(Correct)==T~0, 
                             TRUE~Correct)) %>% 
  mutate(Donut = case_when(Correct==max(Correct)~1,
                           TRUE~0))  %>% 
  ungroup() %>% 
  group_by(Name) %>% 
  summarise(`Donuts Won` = sum(Donut)) %>% 
  #mutate(`Donuts Won` = strrep("award,", Donuts)) %>% 
  right_join(.,indiv_disp_2) %>% 
  select(-starts_with("Week "), -Percent) %>% 
  mutate(`Season Rank` = min_rank(desc(`Season Percent`)),.before = Name) %>% 
  arrange(`Season Rank`) 
  
season_leaderboard = season_leaderboard_disp %>% 
  gt() %>% 
  cols_align(
    align = "center") %>% 
   tab_header(
    title = md("Season Leaderboard (Season Percent)"),
    subtitle = md(glue("Week {length(weeks)}"))
    ) %>% 
  # fmt_icon(
  #   columns = `Donuts Won`,
  #   fill_color = "gold",
  # ) %>%
  tab_style(
    style = cell_text(color = "red", weight = "bold"),
    locations = cells_body(
      columns = c(`Season Percent`),
      rows = `Season Percent`<.5
    )) %>% 
   tab_style(
    style = cell_text(color = "green", weight = "bold"),
    locations = cells_body(
      columns = c(`Season Percent`),
      rows = `Season Percent`>.5
    ))%>% 
     tab_style(
    style = cell_text(color = "red", weight = "bold"),
    locations = cells_body(
      columns = c(`Adj Season Percent`),
      rows = `Adj Season Percent`<.5
    )) %>% 
   tab_style(
    style = cell_text(color = "green", weight = "bold"),
    locations = cells_body(
      columns = c(`Adj Season Percent`),
      rows = `Adj Season Percent`>.5
    )) %>% 
  tab_options(
    container.width = pct(100),
    data_row.padding = px(1),
    container.height = "100%"
   ) %>%
    tab_spanner(
    label = "Weekly # Correct",
    columns = starts_with(c("Week "))
  ) %>% 
  text_transform(
    locations = cells_body(c(`Season Trend`)),
    fn = function(x){
      map(season_leaderboard_disp$plot, ggplot_image, height = px(30), aspect_ratio = 4)
                 }) %>%
  cols_hide(columns = c(plot))
```

```{r Printing Adj Season Leaderboard, echo=FALSE}
# Printing the Adj Season Leaderboard
  
adj_season_leaderboard_disp = indiv_disp_2 %>% select(Name, starts_with("Week ")) %>% 
  pivot_longer(starts_with("Week"),names_to = "Week", values_to = "Correct") %>% 
  group_by(Week) %>% 
  mutate(Correct = case_when(is.na(Correct)==T~0, 
                             TRUE~Correct)) %>% 
  mutate(Donut = case_when(Correct==max(Correct)~1,
                           TRUE~0))  %>% 
  ungroup() %>% 
  group_by(Name) %>% 
  summarise(`Donuts Won` = sum(Donut)) %>% 
  #mutate(`Donuts Won` = strrep("award,", Donuts)) %>% 
  right_join(.,indiv_disp_2) %>% 
  select(-starts_with("Week "), -Percent) %>% 
  mutate(`Season Rank` = min_rank(desc(`Adj Season Percent`)),.before = Name) %>% 
  arrange(`Season Rank`)

adj_season_leaderboard = adj_season_leaderboard_disp %>% 
  gt() %>% 
  cols_align(
    align = "center") %>% 
   tab_header(
    title = md("Season Leaderboard (Adjusted Season Percent)"),
    subtitle = md(glue("Week {length(weeks)}"))
    ) %>% 
  # fmt_icon(
  #   columns = `Donuts Won`,
  #   fill_color = "gold",
  # ) %>%
  tab_style(
    style = cell_text(color = "red", weight = "bold"),
    locations = cells_body(
      columns = c(`Season Percent`),
      rows = `Season Percent`<.5
    )) %>% 
   tab_style(
    style = cell_text(color = "green", weight = "bold"),
    locations = cells_body(
      columns = c(`Season Percent`),
      rows = `Season Percent`>.5
    ))%>% 
     tab_style(
    style = cell_text(color = "red", weight = "bold"),
    locations = cells_body(
      columns = c(`Adj Season Percent`),
      rows = `Adj Season Percent`<.5
    )) %>% 
   tab_style(
    style = cell_text(color = "green", weight = "bold"),
    locations = cells_body(
      columns = c(`Adj Season Percent`),
      rows = `Adj Season Percent`>.5
    )) %>% 
  tab_options(
    container.width = pct(100),
    data_row.padding = px(1),
    container.height = "100%"
   ) %>%
    tab_spanner(
    label = "Weekly # Correct",
    columns = starts_with(c("Week "))
  ) %>% 
  text_transform(
    locations = cells_body(c(`Season Trend`)),
    fn = function(x){
      map(adj_season_leaderboard_disp$plot, ggplot_image, height = px(30), aspect_ratio = 4)
                 }) %>%
  cols_hide(columns = c(plot))
```


```{r instructor formattable, echo=FALSE}
improvement_formatter <- 
  formatter("span", 
            style = x ~ formattable::style(
              font.weight = "bold", 
              color = ifelse(x > .5, "green", ifelse(x < .5, "red", "black"))),
             x ~ icontext(ifelse(x == max(x), "star", ""), x))

indiv_disp_3 = indiv_disp_2 %>% select(-plot)
indiv_disp_3$`Season Trend` = apply(indiv_disp_3[,2:(1+length(weeks))], 1, FUN = function(x) as.character(htmltools::as.tags(sparkline(as.numeric(x), type = "line", chartRangeMin = 0, chartRangeMax = 1, fillColor = "white"))))

indiv_table_2 = as.htmlwidget(formattable(indiv_disp_3, 
                                align = c("l", rep("c", NROW(indiv_disp_3)-1)),
              list(`Season Percent` = color_bar("#FA614B"),
              `Season Percent`= improvement_formatter,
              `Adj Season Percent`= improvement_formatter)))
              
indiv_table_2$dependencies = c(indiv_table_2$dependencies, htmlwidgets:::widget_dependencies("sparkline", "sparkline"))
```

```{r Plotting individual results over the season2, eval=FALSE, include=FALSE, out.width="100%"}
#Creating the individual plot.  
inst_indiv_plots = weekly_indiv_percent_plot %>% 
  ggplot(aes(x = factor(Week), y = Percent, color = Name))+
  geom_point()+
  geom_path(aes(x = as.factor(Week), y = Percent, color = Name, 
                group = Name))+
  ylim(c(0, 1)) +
  labs(x = "NFL Week", 
       y = "Correct Percentage", 
       title = "Weekly Individual Correct Percentage")+
  facet_wrap(~Name)+
  theme_classic()+
  theme(legend.position = "none",
        plot.title = element_text(hjust = 0.5, size = 18),
        axis.text.x=element_text(angle =45, vjust = 1, hjust = 1))
```

```{r data for data page}
inst.data = map2(inst.picks, weeks, disp_data) %>% bind_rows()
```


```{r fivethirtyeight}
inst_538 = map(results, five38) %>% unlist() %>% sum()
```

```{r pregame, eval=FALSE, include=FALSE}
#Predictions for the week

#Creating the list of group predictions each week.
games = map(inst.picks, games_fn)

#Creating the prediction table.  
pred_table = map(games, pred_table_fn)

#Printing table of instructor predictions
pred_table[[length(pred_table)]] %>% mutate(Game = row_number()) %>% 
  rename(`Votes For` = votes_for, `Votes Against` = votes_against) %>% 
  gt() %>% 
  cols_align(
    align = "center") %>% 
   tab_header(
    title = md("This Week's Predictions"),
    subtitle = md(glue("Week {length(weeks)}"))
    ) %>% 
   tab_options(
    data_row.padding = px(3)
   )
```

Group Predictions
==========================================================================

Sidebar {.sidebar} 
-------------------------------------
#### CBS Sports

<font size="4">

This week we beat or tied `r cbs_experts_beat[[length(weeks)]]` of `r cbs_experts_total[[length(weeks)]]` CBS Sports' Experts.

For the season we are currently beating or tied with `r cbs_experts_beat_season[[length(weeks)]]` of `r cbs_experts_season_total[[length(weeks)]]` CBS Sports' Experts.
 
 </font>


#### ESPN

<font size="4">

We also beat or tied `r espn_experts_beat[[length(weeks)]]` of `r espn_experts_total[[length(weeks)]]` ESPN Experts.
 
For the season we are currently beating or tied with `r espn_experts_beat_season[[length(weeks)]]` of `r espn_experts_season_total[[length(weeks)]]` ESPN Experts.

</font>

Row
--------------------------------------

### Win percentage for the week

```{r}
inst_rate <- weekly_win_percentage[[length(weekly_win_percentage)]]*100
gauge(inst_rate, min = 0, max = 100, symbol = '%', gaugeSectors(
  success = c(55, 100), warning = c(40, 54), danger = c(0, 39)
))
```

### Season Win Percentage

```{r}
inst_season <- season_win_percentage*100
gauge(inst_season, min = 0, max = 100, symbol = '%', gaugeSectors(
  success = c(55, 100), warning = c(40, 54), danger = c(0, 39)
))
```

### Games Correct
```{r}
valueBox(value = season_wins,icon = "fa-trophy",caption = "Correct Games this Season")
```

### Games Picked
```{r}
valueBox(value = season_games,icon = "fa-clipboard-list",caption = "Games Picked this Season")
```

### Number of predictions
```{r}
valueBox(value = Total,icon = "fa-users",caption = "Predictions this week")
```

Row
--------------------------------------

### 

```{r}
inst_group_table
```

### 

```{r}
ggplotly(inst_group_season_plot) %>% 
  layout(title = list(y = .93, xref = "plot"),
         margin = list(t = 40))
```

Individual Predictions
==========================================================================


Sidebar {.sidebar} 
-------------------------------------

#### Best Picks of the Week.

<font size="4">

 `r indiv_winners`
 
 </font>
 
#### Best Season Correct Percentage
<font size="4">

`r indiv_season`
 
 </font>

#### Best Adjusted Season Correct Percentage
<font size="4">

`r indiv_season_adj`

 * Adjusted season percentage accounts for the number of weeks picked.
 
 </font>

row {.tabset}
--------------------------------------

### Individual Table
```{r}
indiv_table
```

<!--
### Individual Table2

```{r, out.height="100%"}
indiv_table_2
```

-->

<!--

### Individual Plots
```{r, out.width="100%"}
#ggplotly(inst_indiv_plots)
```

-->

### Season Leaderboard
```{r, out.width="100%"}
season_leaderboard
```

### Adjusted Season Leaderboard
```{r, out.width="100%"}
adj_season_leaderboard
```

Data
==========================================================================

```{r}
datatable(
  inst.data, extensions = 'Buttons', options = list(
    dom = 'Blfrtip',
    buttons = c('copy', 'csv', 'excel', 'pdf', 'print'),
    lengthMenue = list( c(10, 25, 50, 100, -1), c(10, 25, 50, 100, "All") )
  )
)
```